// 导入数据库
const db = require('../db/index')
    // 导入加密密码包
const bcrypt = require('bcryptjs');
//导入jsonwebtoken包
const jwt = require('jsonwebtoken')
    // 登录处理函数
exports.login = (req, res) => {
    // console.log(req.body);
    // 1.检测表单数据是否合法
    // if (req.body.username == '' && req.body.password == '') {
    //     return res.ResData('用户名和密码不能为空');
    // }
    // 2.根据用户名查询用户数据
    // 接收表单数据
    const userinfo = req.body;
    // 定义sql语句
    const sql = 'select *from sp_manager where mg_name=?'
        // 执行sql语句，查询用户信息
    db.query(sql, userinfo.username, (err, result) => {
        // 加密密码
        // console.log(bcrypt.hashSync('123456', 10));
        // 执行sql语句失败
        if (err) {
            return res.ResData(err.message);
        }
        // 执行成功，但是查询到的数据不等于1
        if (result.length !== 1)
            return res.ResData('用户名错误');

        // 3.判断用户输入密码是否正确
        // console.log(result);
        // 输入密码和数据库里面的密码进行比较

        const compareResult = bcrypt.compareSync(userinfo.password, result[0].mg_pwd)
        if (!compareResult) return res.ResData("密码错误");
        // res.send("登录成功")

        // 4.生成token字符串
        // 清除密码
        const user = {...result[0], mg_pwd: '' }
            // console.log(user);
            // 将用户信息加密生成token
        const secret = "secret";
        const token = jwt.sign(user, secret, { expiresIn: '10h' })
        console.log(token);
        const data = {
            "id": result[0].mg_id,
            "rid": result[0].role_id,
            "username": result[0].mg_name,
            "mobile": result[0].mg_mobile,
            "email": result[0].mg_email,
            "token": 'Bearer' + token,
        }
        res.ResData("登录成功", 200, data);
    })

}